As the complexity of data processing systems increases, some instructions executed by the data processing systems require more instruction cycles to be fully executed. Increasing instruction cycles correspond to longer execution times and, consequently, the need for signals to interrupt execution of the function. The interrupting signals generally indicate that more urgent data processing functions should be performed. In current instructions which have a high latency, one of two methods is generally implemented when an interrupt is asserted before an instruction is fully executed.
In a first method, the data processing system ignores the interrupt until after the instruction is fully executed. After the instruction is executed, the interrupt is then processed. In data processing instructions, such as divide, multiply and accumulate, and complex fuzzy logic instructions, the time expended before handling the interrupt may be critical to the proper operation of the data processing system. In other systems in which the timing of the interrupt is not critical, the efficiency of the system may be decreased by the long execution time of the instruction currently being executed.
In a second method, the data processing system simply stops execution of the instruction when the interrupt is received. The data necessary for execution of the instruction is typically stored in a stack memory, or other memory device, in the data processing system and the interrupt is then processed immediately. After processing the interrupt, the data processing system then retrieves the data stored on the stack memory, or other memory device, and resumes execution of the instruction from the beginning. Previously calculated intermediate results are retrieved and again used during subsequent execution of the same instruction. In data processing systems which implement this second method of processing interrupts, initialization for execution of the instruction must be performed in a series of additional instructions. If the initialization steps were performed during execution of the instruction, then all initialization steps would be repeated each time the instruction was interrupted. Again, the efficiency of the data processing system is not optimized. The required inclusion of initialization steps prior to instruction execution uses valuable memory space, without increasing the functionality of the system which implements the second method for processing interrupts.
A need has developed for a data processing system which allows interrupts to be effectively processed while maintaining the optimum performance of the system. Currently, prior art implementations simply ignore the interrupt, regardless of urgency and priority, until after instruction execution, or interrupt instruction execution and immediately process the interrupt, losing all intermediate instruction calculation. In general, the prior art techniques described above do not provide for optimum performance of the data processing system in which they are implemented.